package com.lich.service.graph;

import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;

import javax.annotation.Resource;

import org.springframework.stereotype.Service;

import com.lich.dao.graph.ErrorTimesMapper;
import com.lich.dao.graph.MonthErrorTimesMapper;
import com.lich.dao.graph.WeekErrorTimesMapper;
import com.lich.entity.graph.ErrorAnalysis;

@Service
public class ErrorAnalysisService {
	@Resource
	ErrorTimesMapper errorTimesMapper;
	@Resource
	WeekErrorTimesMapper weekErrorTimesMapper;
	@Resource
	MonthErrorTimesMapper monthErrorTimesMapper;
	
	/**
	 * @description:查找日登陆的次数,并封装到bean中
	 * @author: luosf 
	 * @Time: 2016年9月14日  
	 * @param clientLoginTimes 用于封装数据与参数
	 * @return 封装数据的bean
	 */
	public ErrorAnalysis findDayErrorTimes(ErrorAnalysis errorAnalysis){
		
		List<ErrorAnalysis> errorAnalysisList = new ArrayList<ErrorAnalysis>();
		
		ErrorAnalysisService.defaultParam(errorAnalysis);
		
		errorAnalysisList = errorTimesMapper.selectByParam(errorAnalysis);
		
		ErrorAnalysisService.dataDispose(errorAnalysisList,errorAnalysis);
		
		return errorAnalysis;
	}
	
	/**
	 * @description:查找周登陆的次数,并封装到bean中
	 * @author: luosf 
	 * @Time: 2016年9月14日  
	 * @param clientLoginTimes 用于封装数据与参数
	 * @return 封装数据的bean
	 */
	public ErrorAnalysis findWeekErrorTimes(ErrorAnalysis errorAnalysis){
		
		List<ErrorAnalysis> errorAnalysisList = new ArrayList<ErrorAnalysis>();
		
		ErrorAnalysisService.defaultParam(errorAnalysis);
		
		errorAnalysisList = weekErrorTimesMapper.selectByParam(errorAnalysis);
		
		ErrorAnalysisService.dataDispose(errorAnalysisList,errorAnalysis);
		
		return errorAnalysis;
	}
	/**
	 * @description:查找月登陆的次数,并封装到bean中
	 * @author: luosf 
	 * @Time: 2016年9月14日  
	 * @param clientLoginTimes 用于封装数据与参数
	 * @return 封装数据的bean
	 */
	public ErrorAnalysis findMonthErrorTimes(ErrorAnalysis errorAnalysis){
		
		List<ErrorAnalysis> errorAnalysisList = new ArrayList<ErrorAnalysis>();
		
		ErrorAnalysisService.defaultParam(errorAnalysis);
		
		errorAnalysisList = monthErrorTimesMapper.selectByParam(errorAnalysis);
		
		ErrorAnalysisService.dataDispose(errorAnalysisList,errorAnalysis);
		
		return errorAnalysis;
	}
	
	/**
	 * @description:图表数据处理
	 * @author: luosf 
	 * @Time: 2016年9月13日  
	 * @param clientLoginTimesList 数据队列
	 * @param clientLoginTimes 数据的封装
	 */
	private static void dataDispose(List<ErrorAnalysis> errorAnalysisList,ErrorAnalysis errorAnalysis){
		List<Integer> dataList = new ArrayList<Integer>();
		List<Date> xAxleList = new ArrayList<Date>();
		for(ErrorAnalysis dlt : errorAnalysisList){
			dataList.add(dlt.getErrorTimes());
			xAxleList.add(dlt.getStatisticsDate());
		}
		errorAnalysis.setDataList(dataList);
		errorAnalysis.setxAxleList(xAxleList);
	}
	
	
	/**
	 * @description: 设置默认日期参数
	 * @author: luosf 
	 * @Time: 2016年9月13日  
	 * @param clientLoginTimes 参数的封装
	 */
	public static void defaultParam(ErrorAnalysis errorAnalysis){
		if(errorAnalysis.getDayNum()==null){
			errorAnalysis.setDayNum(-7);
		}
		if(errorAnalysis.getEndDate() == null || errorAnalysis.getStartDate() == null){
			errorAnalysis.setStartDate(ErrorAnalysisService.beforNumDay(errorAnalysis.getDayNum()+1));
			errorAnalysis.setEndDate(ErrorAnalysisService.beforNumDay(0));
		}
		String endtDate = errorAnalysis.getEndDate()+" 23:59:59";
		errorAnalysis.setEndDate(endtDate);
	}
	/**
	* @description: 查询当前日期前x天的日期
    * @author luosf
    * @param day 天数（如果day数为负数,说明是此日期前的天数）
    * @return Date 日期
    */
    public static String beforNumDay(int day){
    	Date date = new Date();
        Calendar c = Calendar.getInstance();
        c.setTime(date);
        c.add(Calendar.DAY_OF_YEAR, day);
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        String newDate = sdf.format(c.getTime());
     //   System.out.println(newDate);
        return newDate;
    }
}
